package util;

import java.io.IOException;

import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;

public class JSFUtil {

	public static void addMessageSucesso(String msg){
		FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, msg, msg));
	}
	
	public static void addMessageValidacao(String msg){
		FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN, msg, msg));
	}
	
	public static void addMessageErro(String msg){
		FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, msg, msg));
	}
	
	public static void addMessageExcecao(Exception ex){
		addMessageErro("Falha ao efetuar operacao: " + ex.getMessage());
	}
	
	public static HttpSession retornarSessaoCorrente(){
		return (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(false);
	}
	
	public static void redirect( String page ) throws IOException{
		FacesContext.getCurrentInstance().getExternalContext().redirect(page);
	}
	
	/**
	 * Retorna dinamicamente o contexto da aplicacao no servidor, com a URL completa, como
	 * exemplo: http://localhost:8080/SenautoJSF/.
	 */
	public static String getBaseUrl(){
		 String serverName = FacesContext.getCurrentInstance().getExternalContext().getRequestServerName();
		 String serverPort = ""+FacesContext.getCurrentInstance().getExternalContext().getRequestServerPort();
		 String contextPath = FacesContext.getCurrentInstance().getExternalContext().getRequestContextPath();
		
        return "http://" + serverName + ":" + serverPort + contextPath + "/";
    }
	
	/**
	 * Retorna o caminho local fisico dentro do servidor para o diretorio de upload.
	 * Deve ser usado somente dentro do servidor, no cliente nao ira funcionar.
	 */
	public static String getPathUploadDoc() {
		
        return retornarSessaoCorrente().getServletContext().getRealPath("/uploads/");
        
    }
}
